<?php

/**
 * ord_compra_int actions.
 *
 * @package    SAC_CLonsa
 * @subpackage ord_compra_int
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class ord_compra_intActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('ord_compra_int', 'solicitudes');
  }

  public function executeSolicitudes(sfWebRequest $peticion)
  {
      $solicitudes = ItemOsPeer::getItemsPorEstadoSolicitudId( 6 );
      $this->solicitudes = $solicitudes;

      if ( $peticion->isMethod('post') && is_array( $peticion->getParameter('sel_solicitudes_elegidas') ) )
      {
          $this->forward( 'ord_compra_int','crear' );
      }
      elseif( $peticion->isMethod('post') && is_array( $peticion->getParameter('sel_solicitudes_para_compra_interna') ) )
      {
          $this->forward( 'ord_compra_int','confirmar' );
      }
      elseif( $peticion->isMethod('post') && is_array( $peticion->getParameter('sel_guardar_solicitudes_para_compra_interna') ) )
      {
          $this->forward( 'ord_compra_int','guardar' );
      }

  }

  public function executeCrear(sfWebRequest $peticion)
  {
      if ( $peticion->isMethod('post') && is_array( $peticion->getParameter('sel_solicitudes_elegidas') ) )
      {
          $this->bandera = 1;// Para mostrar a la vista que muestra las solicitudes que serán marcadas para una Ordne de Compra Interna, y la petición de confirmación
          $cont = 0;
          $arregloIdItems = $peticion->getParameter('sel_solicitudes_elegidas');
          foreach( $arregloIdItems as $id  )
          {
              $arrayObjetosItems[$cont++] = ItemOsPeer::getItemOrdenServicioPorId( $id );
          }
          $this->arrayItems = $arrayObjetosItems;
      }
      else
      {
          $this->redirect('ord_compra_int/index');
      }
  }

  public function executeConfirmar(sfWebRequest $peticion)
  {
      if( $peticion->isMethod('post') && is_array( $peticion->getParameter('sel_solicitudes_para_compra_interna') ) )//
      {
          $cont = 0;
          $arregloIdItems = $peticion->getParameter('sel_solicitudes_para_compra_interna');
          foreach( $arregloIdItems as $id  )
          {
              $arrayObjetosItems[$cont] = ItemOsPeer::getItemOrdenServicioPorId( $id );
              $observacion_por_solicitud[$cont++] = $peticion->getParameter('observacion_compra_interna_solicitud'.$id );
          }
          $this->arrayItems = $arrayObjetosItems;
          $this->observacion_por_solicitud = $observacion_por_solicitud;
          $this->observaciones_generales = $peticion->getParameter('observaciones_generales');
      }
      else
      {
          $this->redirect('ord_compra_int/index');
      }
  }

  public function executeGuardar(sfWebRequest $peticion)
  {
      if( $peticion->isMethod('post') && is_array( $peticion->getParameter('sel_guardar_solicitudes_para_compra_interna') ) )//
      {
          $arregloIdItems = $peticion->getParameter('sel_guardar_solicitudes_para_compra_interna');

//          foreach($arregloIdItems as $idSolicitud)
//          {
//              $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $id );
//          }

          $ord_compra_int = new OrdenCompraInterna();
          $ord_compra_int->setFechaCreacion( time() );
          $ord_compra_int->setsfGuardUser( $this->getUser()->getGuardUser() );
          $ord_compra_int->setEstadoOrdenCompraInternaId( 1 );
          $ord_compra_int->setObservaciones( $peticion->getParameter('observaciones_generales') );
          

          $cont = 0;
          foreach( $arregloIdItems as $id )
          {
              $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $id );
              if( $solicitud->getEstadoSolicitudId() == 7)
              {
                  $this->redirect('ord_compra_int/index');
              }
              $solicitud->setEstadoSolicitudId(7);
              // guardar cambios hechos en la Solicitud
              $solicitud->save();

              $solicitud_compra_interna = new SolicitudOrdenCompraInterna();
              $solicitud_compra_interna->setItemOsId( $solicitud->getId() );
              $solicitud_compra_interna->setOrdenCompraInterna( $ord_compra_int );
              $solicitud_compra_interna->setObservacion( 
                      $peticion->getParameter('observacion_compra_interna_solicitud'.$solicitud->getId() ) );
              //crear y guardar definitivamente la Solicitud para esta Orden de Compra Interna
              $solicitud_compra_interna->save();

              $this->ultima_observacion = $peticion->getParameter('observacion_compra_interna_solicitud'.$solicitud->getId() );
          }
          // crear y guardar definitivamente la Orden de Compra Interna
          $ord_compra_int->save();
          $this->ord_compra_int = $ord_compra_int;
          
      }
  }
}